<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		// function Person(name,age,str){
		// 	this.name = name;
		// 	this.age = age;
			
		// }

		
		// //p1中的say和p2中的say是同一个方法吗？ 内存的浪费？
		// // 原型链继承

		// // p1.__proto__  === Person.prototype
		// Person.prototype.say =function(){
		// 	alert('我要飞了')

		// }
		// Person.prototype.eat = function(){

		// }
		// Person.prototype.run = function(){
			
		// }
		// Person.prototype.study = function(){
			
		//}//
		// 或造成代码的冗余
		// var p1 = new Person()
		// var p2 = new Person()
		//p1.say()
		//p2.say()
		// console.log(p1.say == p2.say)
		// 结论：我们只要往  某个构造函数的prototype   对象中添加某个属性，方法那么这一个属性或者方法就都可以被所有的该构造函数的实例所使用

		// 原型对象 Person.prototype 是 p1 的原型对象
		// p1的原型对象是 Person.prototype

		// Person的原型对象是谁？
		// console.log(p1)  Object.prototype
		// 改进版
		function Person(){

		}
		 
		//创建的时候已经有了确定原型 Person.prototype
		// console.log(p1)
		Person.prototype.say = function(){}
		
		


		Person.prototype = {
			s1:function(){

			},
			s2:function(){

			}
		}
		//重新赋值，并没有改变p1的原型对象，所以他就访问不到新原型对象中的s1方法
		var p1 = new Person()
		console.log(p1.say)
		console.log(p1.s1) 
		  //如何解决这个问题   ？？

		 //先改变原型 再创建对象

		 // 原型链继承？












	</script>
</body>
</html>